#include <buola/gui.h>

#include <buola/gui/ccompositeicon.h>
#include <buola/image/cimage.h>
#include <buola/algorithm/container.h>

namespace buola { namespace gui {

std::vector<CCompositeIcon*> CCompositeIcon::mCompositeIcons;

CCompositeIcon::CCompositeIcon(PIcon p1,PIcon p2)
    :   m1(p1),
        m2(p2)
{
    mCompositeIcons.push_back(this);
}

CCompositeIcon::~CCompositeIcon()
{
    erase_first_equal(mCompositeIcons,this);
}

bool CCompositeIcon::Draw(img::CGC *pGC,const CPoint_d &pPos,int pSize,EStyle pStyle)
{
    m1->Draw(pGC,pPos,pSize,pStyle);
    m2->Draw(pGC,pPos,pSize,pStyle);

    return true;
}

img::CPicture CCompositeIcon::GetPixmap(int pSize,EStyle pType)
{
    return m1->GetPixmap(pSize,pType);
}

PIcon CCompositeIcon::Get(PIcon p1,PIcon p2)
{
    for(int i=0;i<mCompositeIcons.size();i++)
    {
        if(p1==mCompositeIcons[i]->m1&&p2==mCompositeIcons[i]->m2)
        {
            return mCompositeIcons[i];
        }
    }

    return new CCompositeIcon(p1,p2);
}

/*namespace gui*/ } /*namespace buola*/ }
